package main

type Handler struct {
	props interface{}
	err   error
}

func (h *Handler) Err() error {
	return h.err
}

func (h *Handler) Step1() *Handler {
	if h.err != nil {
		return h
	}
	// do something for step2
	return h
}

func (h *Handler) Step2() *Handler {
	if h.err != nil {
		return h
	}
	// do something for step2
	return h
}

func main() {
	h := &Handler{}
	if err := h.Step1().Step2().Err(); err != nil {
		// handle error
	}
}
